<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BSoftBody</title>
		<link href="../style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<h1>BSoftBody</h1>
		<p>Inherites from<a href="BBody.html">BBody</a></p>
		<p id="resume"></p>
		<h2>public</h2>
		<table id="public"><tr><td align="right"></td><td><a href="#BSoftBody()">BSoftBody</a>();</td></tr>
			<tr><td align="right"></td><td><a href="#~BSoftBody()">~BSoftBody</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#initNodes(BShape*)">initNodes</a>(BShape* shape);</td></tr>
			<tr><td align="right">void </td><td><a href="#randomizeConstraints()">randomizeConstraints</a>();</td></tr>
			<tr><td align="right">bool </td><td><a href="#checkLink(int, int)">checkLink</a>(int node0, int node1) const;</td></tr>
			<tr><td align="right">void </td><td><a href="#appendDeformableAnchor(int, BBody*)">appendDeformableAnchor</a>(int node, BBody* body);</td></tr>
			<tr><td align="right">void </td><td><a href="#appendAnchor(int, BBody*, const BVector&,BReal)">appendAnchor</a>(int node, BBody* body, const BVector& pivot, BReal influence = 1);</td></tr>
			<tr><td align="right">void </td><td><a href="#removeAnchor(int)">removeAnchor</a>(int node);</td></tr>
			<tr><td align="right">void </td><td><a href="#addForce(const BVector&)">addForce</a>(const BVector& force);</td></tr>
			<tr><td align="right">void </td><td><a href="#addForce(const BVector&, int)">addForce</a>(const BVector& force, int node);</td></tr>
			<tr><td align="right">void </td><td><a href="#addAeroForceToNode(const BVector&, int)">addAeroForceToNode</a>(const BVector& windVelocity, int nodeIndex);</td></tr>
			<tr><td align="right">void </td><td><a href="#addAeroForceToFace(const BVector&, int)">addAeroForceToFace</a>(const BVector& windVelocity, int faceIndex);</td></tr>
			<tr><td align="right">void </td><td><a href="#setVelocity(const BVector&)">setVelocity</a>(const BVector& velocity);</td></tr>
			<tr><td align="right">void </td><td><a href="#addVelocity(const BVector&)">addVelocity</a>(const BVector& velocity);</td></tr>
			<tr><td align="right">void </td><td><a href="#addVelocity(const BVector&, int)">addVelocity</a>(const BVector& velocity, int index);</td></tr>
			<tr><td align="right">virtual void </td><td><a href="#setMass(BReal)">setMass</a>(BReal mass);</td></tr>
			<tr><td align="right">bool </td><td><a href="#setVertexMass(int, BReal)">setVertexMass</a>(int index, BReal mass);</td></tr>
			<tr><td align="right">BReal </td><td><a href="#vertexMass(int)">vertexMass</a>(int index) const;</td></tr>
			<tr><td align="right">void </td><td><a href="#setLinearVelocity(const BVector&)">setLinearVelocity</a>(const BVector& linVel);</td></tr>
			<tr><td align="right">BVector </td><td><a href="#getLinearVelocity()">getLinearVelocity</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#setAngularVelocity(const BVector&)">setAngularVelocity</a>(const BVector& angVel);</td></tr>
			<tr><td align="right">void </td><td><a href="#rotate(const BQuater&)">rotate</a>(const BQuater& rot);</td></tr>
			<tr><td align="right">void </td><td><a href="#scale(const BVector&)">scale</a>(const BVector& scl);</td></tr>
			<tr><td align="right">void </td><td><a href="#setPose(bool)">setPose</a>(bool bframe);</td></tr>
			<tr><td align="right">void </td><td><a href="#setPoseMatching(BReal)">setPoseMatching</a>(BReal matching);</td></tr>
			<tr><td align="right">BReal </td><td><a href="#poseMatching()">poseMatching</a>() const;</td></tr>
			<tr><td align="right">BReal </td><td><a href="#facesVolume()">facesVolume</a>() const;</td></tr>
			<tr><td align="right">BVector </td><td><a href="#centerOfMass()">centerOfMass</a>() const;</td></tr>
			<tr><td align="right">BVector </td><td><a href="#evaluatePoseCenter()">evaluatePoseCenter</a>() const;</td></tr>
			<tr><td align="right">BVector </td><td><a href="#clusterCom(int)">clusterCom</a>(int cluster) const;</td></tr>
			<tr><td align="right">int </td><td><a href="#generateClusters(int,int)">generateClusters</a>(int k, int maxiterations = 8192);</td></tr>
			<tr><td align="right">void </td><td><a href="#predictMotion(BReal)">predictMotion</a>(BReal dtime);</td></tr>
			<tr><td align="right">void </td><td><a href="#solveAnchors()">solveAnchors</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#solveContacts()">solveContacts</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#solveLinks()">solveLinks</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#collisionHandler(BBody*, BShape*, const BMatrix&)">collisionHandler</a>(BBody* body, BShape* shape, const BMatrix& matrix);</td></tr>
			<tr><td align="right">void </td><td><a href="#processClusters(BSoftBody*, BBody*, BShape*, const BMatrix&)">processClusters</a>(BSoftBody* softBody, BBody* body, BShape* shape, const BMatrix& matrix);</td></tr>
			<tr><td align="right">void </td><td><a href="#collisionSoftBody(BSoftBody*)">collisionSoftBody</a>(BSoftBody* softBody);</td></tr>
			<tr><td align="right">void </td><td><a href="#setSelfCollision(bool)">setSelfCollision</a>(bool selfCollision);</td></tr>
			<tr><td align="right">bool </td><td><a href="#selfCollision()">selfCollision</a>() const;</td></tr>
			<tr><td align="right">void </td><td><a href="#updateDeactivation(BReal)">updateDeactivation</a>(BReal timeStep);</td></tr>
			<tr><td align="right">void </td><td><a href="#setWindVelocity(const BVector&)">setWindVelocity</a>(const BVector& velocity);</td></tr>
			<tr><td align="right">const BVector& </td><td><a href="#windVelocity()">windVelocity</a>() const;</td></tr>
			<tr><td align="right">virtual void </td><td><a href="#getAabb(BVector&, BVector&)">getAabb</a>(BVector& aabbMin, BVector& aabbMax) const;</td></tr>
			<tr><td align="right">void </td><td><a href="#pointersToIndices()">pointersToIndices</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#indicesToPointers(const int*)">indicesToPointers</a>(const int* map = 0);</td></tr>
			<tr><td align="right">void </td><td><a href="#updateNormals()">updateNormals</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#updatePoints()">updatePoints</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#updateBounds()">updateBounds</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#updatePose()">updatePose</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#updateClusters()">updateClusters</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#cleanupClusters()">cleanupClusters</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#prepareClusters(int)">prepareClusters</a>(int iterations);</td></tr>
			<tr><td align="right">void </td><td><a href="#solveClusters(BReal)">solveClusters</a>(BReal sor);</td></tr>
			<tr><td align="right">void </td><td><a href="#applyClusters(bool)">applyClusters</a>(bool drift);</td></tr>
			<tr><td align="right">void </td><td><a href="#dampClusters()">dampClusters</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#applyRepulsionForce(BReal, bool)">applyRepulsionForce</a>(BReal timeStep, bool applySpringForce);</td></tr>
			<tr><td align="right">void </td><td><a href="#applyForces()">applyForces</a>();</td></tr>
			<tr><td align="right">void </td><td><a href="#applyVelocity()">applyVelocity</a>();</td></tr>
		</table>
		<div id="desc">
			<h2>Detailed Description :</h2>
		</div>
		<h2 id="docs">Member Documentation :</h2>
		<div id="BSoftBody()">
			<h3>BSoftBody();</h3>
		</div>
		<div id="~BSoftBody()">
			<h3>~BSoftBody();</h3>
		</div>
		<div id="initNodes(BShape*)">
			<h3>void initNodes(BShape* shape);</h3>
		</div>
		<div id="randomizeConstraints()">
			<h3>void randomizeConstraints();</h3>
		</div>
		<div id="checkLink(int, int)">
			<h3>bool checkLink(int node0, int node1) const;</h3>
		</div>
		<div id="appendDeformableAnchor(int, BBody*)">
			<h3>void appendDeformableAnchor(int node, BBody* body);</h3>
		</div>
		<div id="appendAnchor(int, BBody*, const BVector&,BReal)">
			<h3>void appendAnchor(int node, BBody* body, const BVector&amp; pivot, BReal influence = 1);</h3>
		</div>
		<div id="removeAnchor(int)">
			<h3>void removeAnchor(int node);</h3>
		</div>
		<div id="addForce(const BVector&)">
			<h3>void addForce(const BVector&amp; force);</h3>
		</div>
		<div id="addForce(const BVector&, int)">
			<h3>void addForce(const BVector&amp; force, int node);</h3>
		</div>
		<div id="addAeroForceToNode(const BVector&, int)">
			<h3>void addAeroForceToNode(const BVector&amp; windVelocity, int nodeIndex);</h3>
		</div>
		<div id="addAeroForceToFace(const BVector&, int)">
			<h3>void addAeroForceToFace(const BVector&amp; windVelocity, int faceIndex);</h3>
		</div>
		<div id="setVelocity(const BVector&)">
			<h3>void setVelocity(const BVector&amp; velocity);</h3>
		</div>
		<div id="addVelocity(const BVector&)">
			<h3>void addVelocity(const BVector&amp; velocity);</h3>
		</div>
		<div id="addVelocity(const BVector&, int)">
			<h3>void addVelocity(const BVector&amp; velocity, int index);</h3>
		</div>
		<div id="setMass(BReal)">
			<h3>virtual void setMass(BReal mass);</h3>
		</div>
		<div id="setVertexMass(int, BReal)">
			<h3>bool setVertexMass(int index, BReal mass);</h3>
		</div>
		<div id="vertexMass(int)">
			<h3>BReal vertexMass(int index) const;</h3>
		</div>
		<div id="setLinearVelocity(const BVector&)">
			<h3>void setLinearVelocity(const BVector&amp; linVel);</h3>
		</div>
		<div id="getLinearVelocity()">
			<h3>BVector getLinearVelocity();</h3>
		</div>
		<div id="setAngularVelocity(const BVector&)">
			<h3>void setAngularVelocity(const BVector&amp; angVel);</h3>
		</div>
		<div id="rotate(const BQuater&)">
			<h3>void rotate(const BQuater&amp; rot);</h3>
		</div>
		<div id="scale(const BVector&)">
			<h3>void scale(const BVector&amp; scl);</h3>
		</div>
		<div id="setPose(bool)">
			<h3>void setPose(bool bframe);</h3>
		</div>
		<div id="setPoseMatching(BReal)">
			<h3>void setPoseMatching(BReal matching);</h3>
		</div>
		<div id="poseMatching()">
			<h3>BReal poseMatching() const;</h3>
		</div>
		<div id="facesVolume()">
			<h3>BReal facesVolume() const;</h3>
		</div>
		<div id="centerOfMass()">
			<h3>BVector centerOfMass() const;</h3>
		</div>
		<div id="evaluatePoseCenter()">
			<h3>BVector evaluatePoseCenter() const;</h3>
		</div>
		<div id="clusterCom(int)">
			<h3>BVector clusterCom(int cluster) const;</h3>
		</div>
		<div id="generateClusters(int,int)">
			<h3>int generateClusters(int k, int maxiterations = 8192);</h3>
		</div>
		<div id="predictMotion(BReal)">
			<h3>void predictMotion(BReal dtime);</h3>
		</div>
		<div id="solveAnchors()">
			<h3>void solveAnchors();</h3>
		</div>
		<div id="solveContacts()">
			<h3>void solveContacts();</h3>
		</div>
		<div id="solveLinks()">
			<h3>void solveLinks();</h3>
		</div>
		<div id="collisionHandler(BBody*, BShape*, const BMatrix&)">
			<h3>void collisionHandler(BBody* body, BShape* shape, const BMatrix&amp; matrix);</h3>
		</div>
		<div id="processClusters(BSoftBody*, BBody*, BShape*, const BMatrix&)">
			<h3>void processClusters(BSoftBody* softBody, BBody* body, BShape* shape, const BMatrix&amp; matrix);</h3>
		</div>
		<div id="collisionSoftBody(BSoftBody*)">
			<h3>void collisionSoftBody(BSoftBody* softBody);</h3>
		</div>
		<div id="setSelfCollision(bool)">
			<h3>void setSelfCollision(bool selfCollision);</h3>
		</div>
		<div id="selfCollision()">
			<h3>bool selfCollision() const;</h3>
		</div>
		<div id="updateDeactivation(BReal)">
			<h3>void updateDeactivation(BReal timeStep);</h3>
		</div>
		<div id="setWindVelocity(const BVector&)">
			<h3>void setWindVelocity(const BVector&amp; velocity);</h3>
		</div>
		<div id="windVelocity()">
			<h3>const BVector&amp; windVelocity() const;</h3>
		</div>
		<div id="getAabb(BVector&, BVector&)">
			<h3>virtual void getAabb(BVector&amp; aabbMin, BVector&amp; aabbMax) const;</h3>
		</div>
		<div id="pointersToIndices()">
			<h3>void pointersToIndices();</h3>
		</div>
		<div id="indicesToPointers(const int*)">
			<h3>void indicesToPointers(const int* map = 0);</h3>
		</div>
		<div id="updateNormals()">
			<h3>void updateNormals();</h3>
		</div>
		<div id="updatePoints()">
			<h3>void updatePoints();</h3>
		</div>
		<div id="updateBounds()">
			<h3>void updateBounds();</h3>
		</div>
		<div id="updatePose()">
			<h3>void updatePose();</h3>
		</div>
		<div id="updateClusters()">
			<h3>void updateClusters();</h3>
		</div>
		<div id="cleanupClusters()">
			<h3>void cleanupClusters();</h3>
		</div>
		<div id="prepareClusters(int)">
			<h3>void prepareClusters(int iterations);</h3>
		</div>
		<div id="solveClusters(BReal)">
			<h3>void solveClusters(BReal sor);</h3>
		</div>
		<div id="applyClusters(bool)">
			<h3>void applyClusters(bool drift);</h3>
		</div>
		<div id="dampClusters()">
			<h3>void dampClusters();</h3>
		</div>
		<div id="applyRepulsionForce(BReal, bool)">
			<h3>void applyRepulsionForce(BReal timeStep, bool applySpringForce);</h3>
		</div>
		<div id="applyForces()">
			<h3>void applyForces();</h3>
		</div>
		<div id="applyVelocity()">
			<h3>void applyVelocity();</h3>
		</div>
	</body>
</html>